package com.gl.glbooks.model
{
	import com.gl.glbooks.model.constants.Constants;
	import com.gl.glbooks.view.AltaPrestamoPanel;
	import com.gl.glbooks.vos.Confirmacion;
	import com.gl.glbooks.vos.Ejemplar;
	import com.gl.glbooks.vos.EstadoEjemplar;
	import com.gl.glbooks.vos.Libro;
	import com.gl.glbooks.vos.LibroFisico;
	import com.gl.glbooks.vos.Prestamo;
	
	import mx.collections.ArrayCollection;
	
	public class AltaPrestamoPanelModel
	{
		private var _libroSeleccionado:Libro;
		
		[Bindable]
		public var prestamoSeleccionado:Prestamo;
		
		[Bindable]
		public var panel:AltaPrestamoPanel;
		
		[Bindable]
		public var usuarios:ArrayCollection;
		
		[Bindable]
		public var ejemplares:ArrayCollection;
		
		[Bindable]
		public function get libroSeleccionado():Libro
		{
			return _libroSeleccionado;
		}
		
		public function set libroSeleccionado(value:Libro):void
		{
			if( value != _libroSeleccionado )
			{
				_libroSeleccionado = value;
				if( _libroSeleccionado is LibroFisico )
				{	
					ejemplares = new ArrayCollection( ( _libroSeleccionado as LibroFisico ).ejemplar.toArray() ); 
					ejemplares.filterFunction = prestamoFilterFunction;
					ejemplares.refresh();
					if( panel )
					{
						panel.limpiar();
						panel.getFechaHoy();
					}
				}
			}
		}
		
		private function prestamoFilterFunction( obj:Object ):Boolean
		{
			if( obj is Ejemplar )
			{
				var ejemplar:Ejemplar = obj as Ejemplar;
				
				if( ejemplar.estadoEjemplar == EstadoEjemplar.disponible && ejemplar.fechaBaja == null)
				{		
					return true;
				}
			}	
			return false;
		}
		
	}

}